import scrapy
import re
from ..items import Data


class DouBanSpider(scrapy.Spider):
    # 爬虫的名称，后面需要通过爬虫的名称启动爬虫
    name = "DouBanSpider"
    allowed_domains = ["movie.douban.com"]

    # 需要爬取的页面
    start_url = 'https://movie.douban.com/top250?start=%7Bpage%7D&filter='

    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
    }

    # 手动编写发起请求的代码
    def start_requests(self):
        yield scrapy.Request(url=self.start_url, headers=self.head)

    # 多返回的数据进行处理
    def parse(self, response):
        # 解析html文件
        for info in response.xpath("//div[@class='info']"):
            # 影片名
            title = info.xpath(".//span[@class='title']/text()").extract()[0]

            # 评分
            score = info.xpath(".//span[@class='rating_num']/text()").extract()[0]

            dy_info = info.xpath(".//div[@class='bd']/p[1]/text()").extract()[0].strip()

            # 导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins

            dy = ""
            re_data = re.findall(r"导演: (.*)主演", dy_info)
            if len(re_data) == 1:
                dy = re_data[0].strip()

            # 返回数据
            yield Data(title=title, score=score, dy=dy)
